iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 24
0

Day 24 開源機房主機視覺化軟體 - Grafana Dashboard 建置與使用

本日重點與方向 (TAG): Grafana、Open Source Dashboard、DataSource、Alert、Monitoring、Notification、Telegram Bot、Line Bot、Webhook。
先前因為老師推說要去參加通訊大賽 (Mobile Hero) 的比賽 (2018 的),所以有緣接觸到 研華科技 Adventech (後面還跑去內湖總公司那邊一趟搞比賽)的 Wise PaaS,因為 Wise PaaS 的 Web UI 端是基於 Grafana 去改造的 (印象中研華有開幫忙搞 Grafana 套件的實習,看別人文章提的),後面研華就基於 Grafana 那個架構添加一些專有的 Plugin,印象中主要是往工業類控制與場域環控部分去開發,當然還有一些自動化生產的廠房環境設備去監控,可能是需要一些新的想法,所以研華就去參加了通訊大賽的比賽贊助(推論的),我們那時候做了一些機房環控的資料搞上去 Dashboard 之上,因為 Grafana 的一堆坑在 MongoDB (沒錯,Grafana 不支援 MongoDB) 那時候的後端開的服務在研華機房,就踩坑到死的在尋找 MongoDB on Grafana 的一些做法,為了當時能夠搞定 MongoDB 的問題,我們就自建了一下 Grafana,那時候也感謝研華那邊的技術支援給後台權限去裝套件,最後轉上去 Wise PaaS 的 Web UI 去顯示也成功,但是就從那個時候開始,也就結下了 Grafana 的不解之緣,那時候測試大概是在 5.7 的版本,因為 Grafana 跳版本的時候有一些 Dashbord 遷入的問題導致 Web UI 畫面有可能會有區塊異常的錯誤,這邊基本上都是起 6.7.4版本,現在 Grafana 也長大到 7.0 版了,對於整個 Web UI 有重整過一些功能與整合套件,也算是大家越來越好用的 DashBoard 沒有之一了吧。

本次使用設備資訊

Network Switch

  • 數量: 1
  • 型號: D-Link 1210-28 (L2 Switch)

Bare Metal

Monitoring Node

  • 數量: 1
  • Ubuntu: 16.04 / 18.04
  • Docker Version: 19.03
  • CPU: E3-1230_V3 ^ 1
  • RAM: 16GB
  • OS_Disk: 120 GB (SSD)
  • Network: 1Gbps

Grafana 安裝與操作

https://github.com/grafana/

Grafana 能安裝的平台

Grafana 支援的資料庫

Grafana 安裝

  • 安裝指令
sudo apt-get install -y apt-transport-https
sudo apt-get install -y software-properties-common wget
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list 
sudo apt-get update
sudo apt-get install grafana
sudo systemctl enable grafana-server.service
  • 狀態檢查與啟動的指令

壞掉或是網頁不通就先來這邊開服務看壯態。

sudo service grafana-server start
sudo service grafana-server restart
sudo service grafana-server status
  • 安裝後的介面

http://:3000,預設帳號密碼都是 admin

Grafana Web UI 連結的一些配置小技巧

都是去 /etc/grafana/grafana.ini 裡面去改。

無帳號即可檢視 DashBoard

#################################### Anonymous Auth ######################
[auth.anonymous]
# enable anonymous access
enabled = true

# specify organization name that should be used for unauthenticated users
;org_name = Main Org.

# specify role for unauthenticated users
org_role = Viewer

Grafana 允許被 iframe 遷入

# set to true if you want to allow browsers to render Grafana in a <frame>, <iframe>, <embed> or <object>. default is false.
allow_embedding = true

Grafana 的資料庫連結配置

查資料之前都需要連結一下資料庫,這邊 Grafana 對於資料庫連結稱為 DataSource,你需要先配置一下後面才可以查資料,Grafana 允許多個資料庫與多種連線連結,所以就看自己的配置去添加。

  • 找一下 Data Sources 的設定區域

  • 選一下建立新的 Data Source

  • 找一下你的資料庫種類,然後選進去

  • 設定一下連線資訊

Data Source Name 就是你之後去查詢時可以選擇資料庫查資料的識別名稱,設定過後先按一下 Save & Test,確認可以連線後再返回。

Grafana 的顯示區塊配置

  • 選擇圖表種類

  • 設定資料庫查詢語法

這邊允許多組查詢,對應到不同的圖表需求之上。

  • 動態畫圖

這邊可以調整一些顯示方式,如加球球、數據連線、長條圖、多數據放在同一張圖之上 (這需要資料庫多個查詢達成)、最新數據+繪圖

  • 純數據

  • 嵌入圖片跟影片

印象中新版本會因為安全性問題,還有因為一些遷入網頁變成攻擊行為的問題,會先把遷入的功能關掉,所以要改的話要去找一下怎麼改 grafana.ini

  • 文字顯示

這邊的文字有支援 htmlmarkdown 就讓大家自己去運用吧。

  • 表格輸出

這個表格欄位部分,它會自動幫你用你的 SQL 中查出來的欄位名稱去帶,需要改的話就去 as XXX 去改。

  • Alert 警告發報資訊

  • Dashboard 列表

這邊主要是提供忒你快速切換你的 Dashboard 使用

  • 切分你的區塊的一個 Row 功能

這功能就是可以把你的一些 Dashboard 的 Block 塞在一個 Row 之下,他們就可以變成一個可以收縮選擇性的檢視區塊。

  • 關於以上的畫圖工具去弄出來的頁面顯示

關於外掛套件的部分

https://grafana.com/plugins

Dashboard 輪播的功能

當你有很多的 Dashboard 分別在搞不同的監控時,又需要看到每一個 Dashboard 狀態時,就用這個功能去做輪播,需要的就把它加進去,之後設定 Dashboard 檢視的延遲跳轉時間。

Grafana 權限劃分

Grafana 可以讓你有一些基礎的權限配置,讓使用者在不同的組織、帳戶之下,具有一下不同的權限可以檢閱或是編輯 Dashboard。

Grafana Dashboard 版本控制

做軟體業基本上是最需要版本控制的,別人亂搞一下東西就全壞掉真的難過,Grafana 這邊有幫你搞一下版本控制的歷史,你有改過保存起來就會存在這邊,你也可以針對特定版本進行回復的行為,也算是好用的功能。

Grafana 的頁面恢復

前面講的版本恢復,他是基於我們的 Dashboard 存在的狀態下去做恢復的,而今天你的 Server 直接死給你看,基本上以傳統的 Web 要恢復的話,我們主要是對於專案重新啟動去吃頁面的 HTML、PHP 頁面等等的,而對於 Grafana 部分,則是你需要在你的一個版本之上的 Dashboard 配置完成後,將他的頁面資料的 JSON 複製到本機端,這樣下次恢復環境時,把你的 Data Source 添加回去,再 import 這個 Dashboard 的檔案,他就會全部跑回來了。

Alert 與對外告警

這邊你就要去設定你的一些告警的對外發送的端點,Line Bot / Telegram Bot 的話就是給一下機器人 ID、Secret,Webhook 就給 API,有需要的就去下拉選裡面選一下,他會跟你說你所需要填入的資訊與相關的內容,之後再綁定這些告警的方式到你的數據檢視的 Dashboard 的區塊端即可。

對外告警設定

  • 找到 Alert 的設定區塊

  • 選擇告警方式

  • 透過 Notification Channels 配置對外的告警方式與基礎配置

這邊設定完的話,可以按下 Send Test 做一下測試,他會幫你發送一下測試的告警。

數據端監測與對外告警綁定

  • 找一個有循序數據的圖表

純數據顯示的印象中不支援,只有支援這種有時間序的繪圖。

  • 設定發報的規則、發報對應的對外告警、發報時的一些抬頭與內容

這邊設定完成的話,可以按一下 Test Rule,就會以你設定的對外發報方式,將你的告警內容傳遞到你的接收端去,測試完成之後基本上就算是設定成功了。

  • 檢閱一下發報狀態 (在 TelegramBot 之上)

MongoDB 連結的功能

https://github.com/JamesOsgood/mongodb-grafana

  • 參考這篇做的

  • 安裝與配置

這個套件是用 Node.js 搞出來的,所以要裝一下 npm 到你的機器之上。

git clone https://github.com/JamesOsgood/mongodb-grafana.git /usr/lib/grafana/plugins
cd /usr/lib/grafana/plugins
npm install
nohup npm run server > mongodb-grafana.log 2&>1 &
service grafana-server restart
  • Grafana 的 DataSource 設定

這邊他是用代理的方式幫你去打 Mongodb,所以一定把 HTTP URL 改成 http://127.0.0.1:3333,真正的 MmongoDB 連結就放置在 MongoDB URL 那邊,然後因為他是外掛套件,所以有一些功能不支援,比如說: 數據繪圖時,你的圖表無法即時看到數據變動,進會有繪圖資料(通常是你滑鼠在圖表上移動,數據會因為時間不同而改變)、Alert 對於即時數據的檢查與告警。


上一篇
Day 23 開源機房主機監控軟體 - Icinga2 + Icinga web 2 建置與使用
下一篇
Day 25 開源機房通訊架構環境建置 - Mosquitto MQTT 通訊建置與使用
系列文
基於付費公有雲與開源機房自建私有雲之雲端應用服務測試兼叢集與機房託管服務實戰之勇者崎嶇波折且劍還掉在路上的試煉之路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言